Computers are complicated devices that can provide rich functionality through a large variety of application and operating system (OS) features. However, computer applications and systems remain hard to use in many situations for many users. Moreover, computer applications and systems can be unforgiving when something goes wrong. As interconnections between applications and between systems increase, the opportunities for a user's small mistake to corrupt large amounts of state throughout one or more computer systems multiply.
One approach to helping the user out in such situations includes the familiar “undo” feature known in many contemporary applications. However, this approach can be inadequate at least because the effects of some “mistakes” can propagate throughout multiple applications, including the operating system, and through other interconnected systems. In addition, implementations of this approach tend to be strictly chronological in nature and applicable in only a small time frame (e.g., for only a limited number of actions or only while the application is in its current execution instance). In contrast, another approach allows restoration of an OS state (e.g., after a system crash or to return to a previous OS version), but this approach does not integrate its restorative effects into multiple applications executing within one or more systems nor does it apply to non-OS applications. Accordingly, existing approaches leave much room for improvement.